/**
给你一个链表，两两交换其中相邻的节点，并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题（即只能进行节点交换）。
输入：head = [1,2,3,4]
输出：[2,1,4,3]
 */
function swapPairs(head) {
  let dummyHead = new ListNode(0)
  dummyHead.next = head
  let curr = dummyHead
  while(curr.next&&curr.next.next) {
    let node1 = curr.next
    let node2 = curr.next.next
    curr.next = node2
    node1.next = node2.next
    node2.next = node1
    curr = node1
  }
  return dummyHead.next
}
const head = [1,2,3,4]
console.log(swapPairs(head))
/**
 * idea: 使用虚拟头节点，然后使用两个指针，一个指针指向当前节点，一个指针指向当前节点的下一个节点
 * 然后交换两个节点，然后移动指针
 */